import { IMsgCoder } from "kilom";
import { MsgCoder } from "../config/Msg";

/**
 * 协议消息编解码
 */
export default {

    encode: function (msgId: number, msg?: any): Buffer {
        MsgCoder.encodeMsgId(msgId);
        return MsgCoder.encodeToc(msgId, msg) as Buffer;
    },

    decode: function (data: Buffer): { msgId: number; msg?: any; } {
        let msgId = MsgCoder.decodeMsgId(data);
        return { msgId, msg: MsgCoder.decodeTos(msgId) };
    },

    decodeMsgId: function (data: Buffer): { msgId: number; msgBuf: Buffer; } {
        let msgId = MsgCoder.decodeMsgId(data);
        return { msgId, msgBuf: MsgCoder.getMsgBuf() };
    },

    decodeMsgBuf: function (msgId: number, msgBuf: Buffer) {
        return MsgCoder.decodeTos(msgId, msgBuf);
    }

} as IMsgCoder;